package uniandes.vista;

import java.awt.BorderLayout;
import java.awt.HeadlessException;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.media.opengl.GLCanvas;
import javax.swing.JFrame;

import com.sun.opengl.util.Animator;




/**
 * @author 	Andres Peralta, Felipe Camacho
 */
public class Escena3D extends JFrame
{
	
    //-----------------------------------------------------------------
    // Atributos
    //-----------------------------------------------------------------
	
	/**
	 * Controlador de los eventos de la escena
	 */
	private ControladorEscena3D control;
	
    //-----------------------------------------------------------------
    // Constructores
    //-----------------------------------------------------------------		

    /**
     * Crea la vista de la escena 3D. Se crean los objetos y se ponen en el escenario.<br>
     * <b>post: Se crean los objetos, se ponen en un escenario </b> 
     */
	public Escena3D( ) 
	{
		//Titulo
		super("Escena 3D practico n5 y n6");
		
		 // Construye la ventana
        getContentPane().setLayout( new BorderLayout( ) );
        setSize( 800, 600 );
        setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        
        // Construye el controlador de la escena
        control = new ControladorEscena3D();
        
        // Construye el canvas
        GLCanvas lienzo = new GLCanvas();
        lienzo.addGLEventListener(control);
        
        getContentPane( ).add(lienzo, BorderLayout.CENTER);
        
        final Animator animador = new Animator(lienzo);
        // Manejo de eventos
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
              // Se corre en otro thread para evitar deadlocks
              // en algunas plataformas
              new Thread(new Runnable() {
                  public void run() {
                	animador.stop();
                    System.exit(0);
                  }
                }).start();
            }
          });    
        animador.start();        
	}

	
    //-----------------------------------------------------------------
    // Main de la aplicacion
    //-----------------------------------------------------------------

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		Escena3D interfaz = new Escena3D();
        interfaz.setVisible( true );

	}

}
